package com.chentf.algorithm.algorithm.StringAndArrays;

/**
 * @author chentengfei
 * @desc 汉诺塔问题
 * @date 2022-02-04 14:01:33
 */
public class TestHanoi {

    public static void main(String[] args) {
        hannoi(5,'A','B','C');
    }

    /***
     * @author chentengfei
     * @date 2022/2/4 14:02
     * @param n 共有N个盘子
     * @param from 开始的柱子
     * @param in 中间的柱子
     * @param to 目标柱子
     * 无论有多少个盘子,都认为只有两个,上面的所有盘子和最下面一个盘子.
     */
    public static void hannoi(int n,char from,char in,char to){
        //只有一个盘子
        if(n == 1){
            System.out.println("第1个盘子从"+from+"移动到"+to);
         //无论有多少个盘子,都认为只有两个.上面的所有盘子和下面一个盘子
        }else{
            //移动上面所有盘子到中间位置
            hannoi(n - 1,from,to,in);
            //移动下面的盘子
            System.out.println("第"+n+"个盘子从"+from+"移动到"+to);
            hannoi(n - 1,in,from,to);
        }
    }
}
